<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>高阶函数_函数柯里化</title>
</head>
<body>
    <div id="test1"></div>
    <script type="text/javascript" src="../js/react.development.js"></script>
    <script type="text/javascript" src="../js/react-dom.development.js"></script>
    <script type="text/javascript" src="../js/babel.min.js"></script>
    <script type="text/babel">
    /*
        高阶函数：如果一个函数符合下面两个规范中的任意一个，那么该函数就是高阶函数
            1.若A函数，接收的参数是一个函数，那么A就可以称之为高阶函数。
            2.若A函数，调用的返回值依然是一个函数，那么A就可以称之为高阶函数。
        
        函数的柯里化：通过函数调用继续返回函数的方式，实现多次接收参数最后统一处理的函数编码形式。
    */
        //创建组件
        class Login extends React.Component{
            //初始化状态
            state = {
                username:'',//初始化用户名
                password:'',//初始化账号
            }
            saveFormData = (dataType) =>{
                console.log(dataType)
                return(event) =>{
                    console.log(dataType,event.target.value)
                    this.setState({[dataType] : event.target.value})
                }
            }
            //表单提交的回调函数
            handleSubmit= (event) =>{
                event.preventDefault()//阻止表单提交
                console.log(this)
                const {username,password} = this.state
                // const {username,password} = this
                // alert('您输入的用户名是：'+ username.value + '您输入的密码是： ' + password.value)
                alert('您输入的用户名是：'+ username+ '您输入的密码是： ' + password)
            }
            render(){
                return(
                    <form action="" onSubmit={this.handleSubmit}>
                        <span>姓名：</span>
                        <input onChange = {this.saveFormData('username')} type="text" name="username"/>
                        <span>密码：</span>
                        <input onChange = {this.saveFormData('password')} type="password" name="password"/>
                        <button>登录</button>
                    </form>
                )
            }
        }
        //渲染组件到页面
        ReactDOM.render(<Login/>,document.getElementById('test1'))
    </script>
</body>
</html>